package innova.controlador;

import innova.modelo.CriterioCobranza;

import java.util.ArrayList;
import java.util.List;

public class CriterioCobranzaController {

	private List<CriterioCobranza> criteriosCobranza;
	
	public CriterioCobranzaController() {
		this.criteriosCobranza = new ArrayList<>();
                
                //Creando criterios de cobranza
                CriterioCobranza cc1 = new CriterioCobranza();
                cc1.setIdCriterioCobranza(getCodigoAutomatico());
                cc1.setMayorCantidadIdea(2);
                cc1.setPrecioUnitario(10.25F);
                registrar(cc1);
                
                CriterioCobranza cc2 = new CriterioCobranza();
                cc2.setIdCriterioCobranza(getCodigoAutomatico());
                cc2.setMayorCantidadIdea(5);
                cc2.setPrecioUnitario(15.82F);
                registrar(cc2);
                
                CriterioCobranza cc3 = new CriterioCobranza();
                cc3.setIdCriterioCobranza(getCodigoAutomatico());
                cc3.setMayorCantidadIdea(7);
                cc3.setPrecioUnitario(20.14F);
                registrar(cc3);
	}
	
	public List<CriterioCobranza> buscar() {
		//Listando todos los criterios de cobranzas
		return criteriosCobranza;
	}
	
	public List<CriterioCobranza> buscar(CriterioCobranza criterioCobranza) {
		//Creando un listado de resultado
		List<CriterioCobranza> resultado = new ArrayList<>();
		
		//Recorriendo los criterios de cobranzas
		for(CriterioCobranza item : criteriosCobranza) {
			//Verificando si es igual por el codigo
			if(item.getIdCriterioCobranza() == criterioCobranza.getIdCriterioCobranza()) {
				//Asignando el item al resultado
				resultado.add(item);
			}
		}
		
		//Devolviendo el resultado
		return resultado;
	}
	
	public void eliminar(CriterioCobranza criterioCobranza) {
		//Eliminando el criterio de cobranza
		criteriosCobranza.remove(criterioCobranza);
	}
	
	public void registrar(CriterioCobranza criterioCobranza) {
		//Guardando en el listado
		criteriosCobranza.add(criterioCobranza);
	}
	
	public int getCodigoAutomatico() {
		//Contando la cantidad de criterios de cobranza
		int codigoAutomatico = 0;
		
		if(criteriosCobranza == null) {
			//Asignando el valor
			codigoAutomatico = 1;
		} else {
			//Obteniendo la cantidad
			int cantidad = criteriosCobranza.size();
			codigoAutomatico = cantidad + 1;
		}
		
		return codigoAutomatico;
	}
	
        public float getPrecioUnitarioPorCantidad(int cantidadIdea) {
                //Variables
                float rpta = 0F;
                
                //Analizando en que rango se encuentra
                for(CriterioCobranza item : criteriosCobranza) {
                        //Analizando la cantidad de ideas
                        if(cantidadIdea <= item.getMayorCantidadIdea()) {
                                //Obteniendo el precio unitario
                                rpta = item.getPrecioUnitario();
                                break;
                        }
                }
                
                return rpta;
        }
}
